1. Technical Field
The present invention relates to processing instructions In general, and in particular to processing instructions within a computer system. Still more particularly, the present invention relates to a method and system for optimizing code using an optimizing coprocessor within a computer system.
2. Description of the Prior Art
The computer industry is continuously developing new and improved hardware and software for data processing systems. In many cases, software is written for a particular type of hardware architecture. When updated hardware or software is released, the hardware or software that is being superseded is known as legacy hardware or software. In addition, even when referring to the most current release of a software package, if that release is designed for a superseded hardware architecture, the software is known as legacy software.
In order to protect a customer""s investment in software, when hardware developers introduce an updated hardware architecture they usually design it to be backward compatible with prior machine instructions so customers can run legacy code on it. The processor is placed on the market with the potential of achieving great performance once the new software is obtained but in many cases the customer never does purchase the new software so the performance gain is never realized. Therefore, there is a need to realize these gains sooner without requiring users to upgrade their software.
One approach to optimizing legacy software is by generating an optimized copy of an entire legacy application before executing that application, either in response to a demand for the application or in advance of any actual request for the application. For example, a computer system may automatically generate an optimized copy of an entire application in response to a user initiating that application. However, such approach introduces an undesirable delay into the initiation process such that the user is forced to wait for the optimization to finish before the application can start execution.
Another approach to optimizing legacy software involves an approach known as in-stream or just-in-time code optimization. According to in-stream code optimization, the process of fetching and executing instructions includes an intermediate optimization step interposed between the fetch step and the execute step for each instruction. In-stream optimization reduces the duration of the delay experienced upon initiation of an application, relative to en-masse optimization. One disadvantage of in-stream optimization, however, is that system performance is decreased due to processing cycles that are consumed by the optimization steps.
The present disclosure provides an improved method for performing optimization without delaying the process of initiating legacy software and without decreasing system performance.
In accordance with a preferred embodiment of the present invention, a data processing system includes a central processing unit (CPU) in communication with a system memory. Within the system memory, there is stored legacy code that does not utilize the full features of the CPU. The data processing system also includes a code-optimizing coprocessor in communication with the CPU and the system memory. Control logic within the code-optimizing coprocessor causes the code-optimizing coprocessor to generate optimized code from the legacy code at the same time the CPU executes the legacy code, such that the optimized code is tailored according to the CPU. After the code-optimizing coprocessor has generated at least some optimized code, the code-optimizing coprocessor causes the CPU to automatically utilize at least some optimized code in lieu of at least some of the legacy code.
All objects, features, and advantages of the present invention will become apparent in the following detailed written description.